import 'package:flutter/foundation.dart';

// 状态是由reducer生成并储存在Store里面的。Store更新状态的时候，并不是更改原来的状态对象，
// 而是直接将reducer生成的新的状态对象替换掉老的状态对象，所以State应该是@immutable

// 1.创建State
@immutable
class CountState {
  int _count;

  int get count => _count;

  CountState(this._count);

  // 如果需要对CountState进行初始化
  CountState.initState() {
    _count = 0;
  }
}

// 2.定义View发出的Action，此处我们只想让count+1，所以只有一个Action
enum StoreAction { increment }

// 3.创建reducer，reducer接受一个原来的状态，根据action匹配，然后生成一个新的状态
CountState reducer(CountState countState, action) {
  // 匹配action
  if (action == StoreAction.increment) {
    return CountState(countState.count + 1);
  }
  return countState;
}
